﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ControlPresupuesto
{
    public partial class FrmCompromisos_ImportarEXCEL : Form
    {
        public FrmCompromisos_ImportarEXCEL()
        {
            InitializeComponent();

            //--- Seteo el timeout del adapter para que espere lo que sea necesario
            ControlPresupuestoDataSet.spCompromisoDataTable table = new ControlPresupuestoDataSet.spCompromisoDataTable();
            this.spCompromisoTableAdapter.FillBy
                (
                table,
                "SelectCompromiso",
                null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
                );
            this.spCompromisoTableAdapter.Adapter.SelectCommand.CommandTimeout = 0;

        }

        private void revertirButton_Click(object sender, EventArgs e)
        {
            try
            {
                //--- Obtengo la ruta al archivo
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.RestoreDirectory = true;
                openFileDialog.Filter = "(*.XLSX)|*.xlsx";//|(*.XLS)|*.xls";
                if (openFileDialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                if (MessageBox.Show("Esta seguro que desea Importar La informacion de compromisos?", "COTECAMR", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }

                Cursor.Current = Cursors.WaitCursor;

                //////-- Copio el archivo en una carpeta temporal para evitar errores a la hora de extraer la informacion del mismo                
                String tempFile = Environment.GetEnvironmentVariable("TEMP") + "\\" + DateTime.Now.ToShortDateString().Replace("/", "-") + "-" + DateTime.Now.ToShortTimeString().Replace(":", "_") + ".xlsx";
                System.IO.File.Copy(openFileDialog.FileName, tempFile, true);


                //--- Extraigo la informacion del archivo            
                string Connection = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + tempFile;
                System.Data.Odbc.OdbcConnection con = new System.Data.Odbc.OdbcConnection(Connection);
                System.Data.Odbc.OdbcCommand command = new System.Data.Odbc.OdbcCommand();
                DataTable dt = new DataTable();
                //System.Data.Odbc.OdbcDataAdapter myCommand = new System.Data.Odbc.OdbcDataAdapter("select \"COMPROMISO\",\"COD# UNIDAD\" AS COD_UNIDAD,\"FECHAREG\",\"PERIODO\",\"VIGENCIA\",\"COD# RUBRO\" AS COD_RUBRO,\"CÓD CUENTA\" AS COD_CUENTA,\"COD CONTRATO\" AS COD_CONTRATO,\"ID ENTIDAD\" AS ID_ENTIDAD,\"NOM_ENTIDAD\",\"DSCCONTRATO\",ROUND(\"VALOR\",0) AS VALOR_ROUND,ROUND(\"REGISTROS\",0) AS REGISTROS_ROUND from [Hoja1$] where \"COMPROMISO\"<>''", con);
                System.Data.Odbc.OdbcDataAdapter myCommand = new System.Data.Odbc.OdbcDataAdapter("select * from [COMPROMISOS$]", con);
                //System.Data.Odbc.OdbcDataAdapter myCommand = new System.Data.Odbc.OdbcDataAdapter("select * from [Hoja1$] where \"COMPROMISO\"<>''", con);
                try
                {
                    myCommand.Fill(dt);
                }
                catch (Exception)
                {
                    MessageBox.Show("Se ha presentado un error al tratar de leer la infromacion del EXCEL, tenga en cuenta las siguientes condiciones para importar la infromación:\n - La hoja en la que se encuentra la informacion debe llamarse 'Hoja1'\n - La primera FILA de la Hoja1 debe tener los Encabezados de las columnas.");
                    return;
                }

                //MessageBox.Show(tempFile);
                //return;

                //--- envio la informacion del excel a un procedimiento almacenado para que verifique la informacion
                //ControlPresupuestoDataSet.spCompromisoDataTable table = new ControlPresupuestoDataSet.spCompromisoDataTable();
                //this.spCompromisoTableAdapter.FillBy
                //    (
                //    table,
                //    "IMPORTAR_Compromisos",
                //    Utils.get().dataTableToXML(dt),
                //    null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
                //    );

                dt.Rows.Remove(dt.Rows[0]);
                
                dt.Columns[0].ColumnName = "COMPROMISO";
                dt.Columns[1].ColumnName = "COD_UNIDAD";
                dt.Columns[2].ColumnName = "FECHAREG";
                dt.Columns[3].ColumnName = "PERIODO";
                dt.Columns[4].ColumnName = "VIGENCIA";
                dt.Columns[5].ColumnName = "COD_RUBRO";
                dt.Columns[6].ColumnName = "COD_CUENTA";
                dt.Columns[7].ColumnName = "FECHA_ENTREGA";
                dt.Columns[8].ColumnName = "COD_CONTRATO";
                dt.Columns[9].ColumnName = "ID_ENTIDAD";
                dt.Columns[10].ColumnName = "NOM_ENTIDAD";
                dt.Columns[11].ColumnName = "DSCCONTRATO";
                dt.Columns[12].ColumnName = "FECHACONTR";
                dt.Columns[13].ColumnName = "TIPOMOV";
                dt.Columns[14].ColumnName = "VALOR";
                dt.Columns[15].ColumnName = "DIRECCION";
                dt.Columns[16].ColumnName = "CONCATENAR";
                dt.Columns[17].ColumnName = "CONCATENAR_2";
                dt.Columns[18].ColumnName = "CONCATENAR_3";
                dt.Columns[19].ColumnName = "CONCATENAR_4";
                dt.Columns[20].ColumnName = "CONCATENAR_5";
                dt.Columns[21].ColumnName = "REGISTROS";
                dt.Columns[22].ColumnName = "SALDOS_COMPROMISOS";

                dt.Columns.Remove("FECHA_ENTREGA");
                dt.Columns.Remove("FECHACONTR");
                dt.Columns.Remove("TIPOMOV");
                dt.Columns.Remove("DIRECCION");
                dt.Columns.Remove("CONCATENAR");
                dt.Columns.Remove("CONCATENAR_2");
                dt.Columns.Remove("CONCATENAR_3");
                dt.Columns.Remove("CONCATENAR_4");
                dt.Columns.Remove("CONCATENAR_5");
                dt.Columns.Remove("SALDOS_COMPROMISOS");
                


                ControlPresupuestoDataSet.spCompromisoDataTable table = new ControlPresupuestoDataSet.spCompromisoDataTable();
                this.spCompromisoTableAdapter.FillBy
                    (
                    table,
                    "IMPORTAR_Compromisos_EXCEL",
                    Utils.get().dataTableToXML(dt),
                    null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null
                    );


                Cursor.Current = Cursors.Default;
                MessageBox.Show("Operación realizada con exito!");

            }
            catch (Exception ex)
            {
                MessageException.show(ex);
            }
        }
    }
}
